class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& nums) {
        // dp[i] 表示必须以 i 位置的元素为结尾 的等差数列有多少种
        int n = nums.size();
        vector<int> dp(n);
        int ret = 0;
        for(int i = 2; i < n; ++i)
        {   // 前两个默认为0
            dp[i] = nums[i]-nums[i-1] == nums[i-1]-nums[i-2] ? dp[i-1]+1 : 0;
            ret += dp[i];       
        }
        return ret;
    }
};